namespace KinonekoSoftware.Foundation.UI.Controls
{
#if WINDOWS
    public partial class ForestComboBoxBase
    {

        public static readonly DependencyProperty IconProperty;
        public static readonly DependencyProperty IsFilledProperty;
        public static readonly DependencyProperty IconSizeProperty;
        public static readonly DependencyProperty IconModeProperty;
        public static readonly DependencyProperty CornerRadiusProperty;
        public static readonly DependencyProperty StrokeThicknessProperty;
        
        /*
            ICommand Command { get; }
            object CommandParameter { get; }
                IInputElement CommandTarget { get; }
         */
        
        static ForestComboBoxBase()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(ForestComboBoxBase), new FrameworkPropertyMetadata(typeof(ForestComboBoxBase)));
            IconProperty = DependencyProperty.Register(
                nameof(Icon),
                typeof(Geometry),
                typeof(ForestComboBoxBase),
                new PropertyMetadata(default(Geometry)));
            IsFilledProperty = DependencyProperty.Register(
                nameof(IsFilled),
                typeof(bool),
                typeof(ForestComboBoxBase),
                new PropertyMetadata(default(bool)));
            IconSizeProperty = DependencyProperty.Register(
                nameof(IconSize),
                typeof(double),
                typeof(ForestComboBoxBase),
                new PropertyMetadata(default(double)));
            IconModeProperty = DependencyProperty.Register(
                nameof(IconMode),
                typeof(IconMode),
                typeof(ForestComboBoxBase),
                new PropertyMetadata(default(IconMode)));
            
            
            CornerRadiusProperty = DependencyProperty.Register(
                nameof(CornerRadius),
                typeof(CornerRadius),
                typeof(ForestComboBoxBase),
                new PropertyMetadata(default(CornerRadius)));
            
            StrokeThicknessProperty = DependencyProperty.Register(
                nameof(StrokeThickness),
                typeof(int),
                typeof(ForestComboBoxBase),
                new PropertyMetadata(1));
        }




        //------------------------------------------------
        //
        //  Properties
        //
        //------------------------------------------------

        public IconMode IconMode
        {
            get => (IconMode)GetValue(IconModeProperty);
            set => SetValue(IconModeProperty, value);
        }

        public double IconSize
        {
            get => (double)GetValue(IconSizeProperty);
            set => SetValue(IconSizeProperty, value);
        }

        public bool IsFilled
        {
            get => (bool)GetValue(IsFilledProperty);
            set => SetValue(IsFilledProperty, Boxing.Box(value));
        }

        public Geometry Icon
        {
            get => (Geometry)GetValue(IconProperty);
            set => SetValue(IconProperty, value);
        }
        
        public CornerRadius CornerRadius
        {
            get => (CornerRadius)GetValue(CornerRadiusProperty);
            set => SetValue(CornerRadiusProperty, value);
        }
        
        public int StrokeThickness
        {
            get => (int)GetValue(StrokeThicknessProperty);
            set => SetValue(StrokeThicknessProperty, value);
        }
        protected override DependencyObject GetContainerForItemOverride()
        {
            return new ComboBoxItem();
        }
    }
#endif
}